package com.team.order.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.team.common.core.annotation.Excel;
import com.team.common.core.web.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 订单管理对象 biz_order
 * 
 * @author 梁国瑞
 * @date 2025-07-09
 */
@Data
public class OrderDTO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单ID */
    private Long id;

    /** 订单编号 */
    @Excel(name = "订单编号")
    private String orderNo;

    /** 核销码【UUID产生、唯一】 */
    private String verificationCode;

    /** 核销码图片 */
    private String verificationImg;

    /** 商户ID */
    private Long merchantId;

    /** 下单用户ID */
    private Long userId;

    /** 服务类别id */
    private Long serviceTypeId;

    /** 预约时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预约时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reservationTime;

    /** 订单车辆ID号 */
    private Long carId;

    /** 平台优惠券ID（每次只使用一张） */
    private Long platformCouponId;

    /** 店铺优惠券ID（每次只使用一张） */
    private Long shopCouponId;

    /** 服务总价 */
    private BigDecimal totalPrice;

    /** 实付金额 */
    @Excel(name = "实付金额")
    private BigDecimal price;

    /** 支付方式（0微信、1支付宝、2银行卡） */
    private Long payType;

    /** 支付状态（0未支付、1已支付） */
    private Long payStatus;

    /** 订单状态（0待接单、1待使用、2待评价、3已取消、4已退款、5已完成） */
    @Excel(name = "订单状态", readConverterExp = "0=待接单、1待使用、2待评价、3已取消、4已退款、5已完成")
    private String orderStatus;

    /** 支付时间 */
    private Date payTime;

    /** 订单备注 */
    private String orderRemark;

    /** 删除标志（0表示存在，1表示删除） */
    private String delFlag;

    /** 时间范围查询，开始时间 */
    private LocalDateTime startTime;

    /** 时间范围查询，结束时间 */
    private LocalDateTime endTime;
}
